<?php
class UserDAO extends CI_Model {
	
	
	public function autentication(UserVO $user){
		
		$this -> db -> select('id_usuario, nombre_usuario, nombres, apellidos, contrasena, id_cargo_usuario, id_role_usuario ');
		$this -> db -> from('usuario');
		$this -> db -> where('nombre_usuario', $user->usuario);
		$this -> db -> where('contrasena', $user->contrasena);
		$this -> db -> limit(1);
		
		try { 
			$result = $this -> db -> get();			
		} catch (Exception $e) {
			$this->form_validation->set_message('autentication', 'Usuario o Contrase&ntilde;a Invalida');
			return false;
		}
				
		if($result -> num_rows() == 1)
		{
			foreach ($result->result() as $userfound){
				$this->session->set_userdata('user_id', $userfound->id_usuario);
				$this->session->set_userdata('full_name', $userfound->nombres.' '.$userfound->apellidos);
				$this->session->set_userdata('position_id', $userfound->id_cargo_usuario);
				$this->session->set_userdata('role_id', $userfound->id_role_usuario);
			}
			return true;
		}
		else
		{
			
			return false;
		}
	}
	
	public function create(UserVO $empleado){
		
		$insert = array ('identificacion' 			=> 	$empleado->cedula, 
						 'nombres'					=>	$empleado->nombres,
						 'apellidos'				=>	$empleado->apellidos,
						 'id_cargo_usuario'			=>	$empleado->cargo,
						 'id_dependencia_usuario'	=>	$empleado->dependencias,
						 'nombre_usuario'			=> 	$empleado->usuario,
						 'contrasena'				=>	$empleado->contrasena,
						 'email'					=>	$empleado->email,
						 'id_role_usuario'			=>	$empleado->role);		
		
		try {
			$result = $this -> db -> insert('usuario', $insert);
		} catch (Exception $e) {
			return false;
		}
				
		return true;
	}
	
	public function search(){
	
		$this -> db -> select('id_usuario, identificacion, nombres, apellidos, email, id_cargo_usuario');
		$this -> db -> from('usuario');
		$this -> db -> order_by('id_cargo_usuario asc');
	
		try {
			$result = $this -> db -> get();
		} catch (Exception $e) {
			$this->form_validation->set_message('search', '');
			return false;
		}
	
		if($result -> num_rows() > 0)
		{
			return $result;
		}
		else
		{
			return false;
		}
	}
	
	public function findById($id_usuario){
		$this->load->model('vo/UserVO');
		
		$this -> db -> select('id_usuario, identificacion, nombre_usuario, nombres, apellidos, email, id_cargo_usuario, id_role_usuario, id_dependencia_usuario');
		$this -> db -> from('usuario');
		$this -> db -> where('id_usuario', $id_usuario);
		
		$userVO = new UserVO();
		
		try {
			$usuario = $this -> db -> get();
			
			foreach ($usuario->result() as $empleado){
				$userVO->id 				= $empleado->id_usuario;
				$userVO->cedula 			= $empleado->identificacion;
				$userVO->usuario			= $empleado->nombre_usuario;
				$userVO->nombres			= $empleado->nombres;
				$userVO->apellidos 			= $empleado->apellidos;
				$userVO->email				= $empleado->email;
				$userVO->cargo				= $empleado->id_cargo_usuario;
				$userVO->role 				= $empleado->id_role_usuario;
				$userVO->dependencias 		= $empleado->id_dependencia_usuario;
			}
			return $userVO;
			
		} catch (Exception $e) {
			$this->form_validation->set_message('findById', '');
			return $userVO;
		}
	}
	
	public function update(UserVO $empleado){
		$update = array ('identificacion' 	=> 	$empleado->cedula,
				'nombres'					=>	$empleado->nombres,
				'apellidos'					=>	$empleado->apellidos,
				'id_cargo_usuario'			=>	$empleado->cargo,
				'id_dependencia_usuario'	=>	$empleado->dependencias,
				'nombre_usuario'			=> 	$empleado->usuario,
				'contrasena'				=>	$empleado->contrasena,
				'email'						=>	$empleado->email,
				'id_role_usuario'			=>	$empleado->role);
		$this -> db -> where('id_usuario', $empleado->id);
		
		try {
			$result = $this -> db -> update('usuario', $update);
		} catch (Exception $e) {
			return false;
		}
		
		return true;
	}
	
	public function delete($id_usuario){
		try {
			$result = $this->db->delete('usuario', array('id_usuario' => $id_usuario)); 
		} catch (Exception $e) {
			return false;
		}
	
		return true;
	}
	
	
}